Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Virtual DOS Machine</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Virtual_DOS_Machine"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Virtual_DOS_Machine rootpage-Virtual_DOS_Machine skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Virtual DOS Machine</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p>Die <b><span lang="en">Virtual DOS Machine</span></b> (<b>VDM</b>) ist eine <a href="Virtuelle_Maschine" title="Virtuelle Maschine">virtuelle Maschine</a>, die in den <a href="32-Bit-Architektur" title="32-Bit-Architektur">32-Bit</a>-<a href="X86-Architektur" title="X86-Architektur">x86</a>-Versionen der <a href="Microsoft_Windows_NT" title="Microsoft Windows NT">Windows-NT</a>-<a href="Betriebssystem" title="Betriebssystem">Betriebssystem</a>-Familie von <a href="Microsoft" title="Microsoft">Microsoft</a> enthalten ist. Ihr Zweck besteht darin, die Kompatibilität mit älterer Software sicherzustellen, die für <a href="MS-DOS" title="MS-DOS">MS-DOS</a> (und <a href="PC-kompatibles_DOS" title="PC-kompatibles DOS">dazu kompatiblem DOS</a>) entwickelt wurde.
</p>

<div class="mw-heading mw-heading2"><h2 id="Funktionsweise">Funktionsweise</h2></div>
<p>Die <i><span lang="en">Virtual DOS Machine</span></i>, initiiert durch <span style="font-family: monospace, monospace;">ntvdm.exe</span> – daher auch „NTVDM“, ist eine Emulationsschicht, die eine DOS-Umgebung und PC-Hardware-Komponenten für Programme simuliert: einen <a href="X86-Prozessor" title="X86-Prozessor">x86-Prozessor</a> im <span lang="en"><a href="Real_Mode" title="Real Mode">Real Mode</a></span>, einen <a href="Intel_8253" title="Intel 8253">Intel 8253</a>/8254 <a href="Programmable_Interval_Timer" title="Programmable Interval Timer">PIT</a>, <a href="Video_Graphics_Array" title="Video Graphics Array">CGA/EGA/VGA</a>- und <a href="BIOS_(IBM_PC)" title="BIOS (IBM PC)">PC-BIOS</a> sowie die gängigen DOS-Speicheradressierungsschnittstellen <a href="Expanded_Memory_Specification" title="Expanded Memory Specification">EMS</a>, <a href="Extended_Memory_Specification" title="Extended Memory Specification">XMS</a> und <a href="DOS_Protected_Mode_Interface" title="DOS Protected Mode Interface">DPMI</a>. Für die DOS-Programme erscheint es damit so, als würden sie unter MS-DOS laufen, allerdings sind weit nicht alle Programme mit den Einschränkungen der NTVDM kompatibel – DOS-Programme wurden für die <a href="Softwareinterrupt" class="mw-redirect" title="Softwareinterrupt">INT-21h-Schnittstelle</a> von <a href="PC-kompatibles_DOS" title="PC-kompatibles DOS">DOS</a> und/oder den direkten Hardwarezugriff entwickelt und nicht für die <a href="Windows_Application_Programming_Interface" title="Windows Application Programming Interface">Windows-Programmierschnittstelle</a> <a href="Win32" class="mw-redirect" title="Win32">Win32</a>.
</p><p>Unter Windows werden alle Ressourcen einzig vom <a href="Kernel_(Betriebssystem)" title="Kernel (Betriebssystem)">Kernel</a> verwaltet, sodass ein direkter Zugriff auf die Hardware ausgeschlossen werden muss. Um dies zu garantieren, fängt die <i><span lang="en">Virtual DOS Machine</span></i> Maschineninstruktionen ab, die unter Windows nicht zulässig sind (und zu <i><span lang="en"><a href="Ausnahmebehandlung" title="Ausnahmebehandlung">Exceptions</a></span></i> führen würden), aber in DOS ungeschützt wären. Diese Instruktionen werden entweder emuliert oder übersetzt (z.&nbsp;B. <span style="font-family: monospace, monospace;">int</span>, <span style="font-family: monospace, monospace;">in</span>/<span style="font-family: monospace, monospace;">out</span>, <span style="font-family: monospace, monospace;">cli</span>/<span style="font-family: monospace, monospace;">sti</span>, <span style="font-family: monospace, monospace;"><a href="HLT_(Maschinenbefehl)" title="HLT (Maschinenbefehl)">hlt</a></span>) oder weiterhin unterbunden (z.&nbsp;B. der direkte Zugriff auf Datenträger). Anfragen an das Betriebssystem, wie das Lesen oder Schreiben von Dateien, werden von der VDM in entsprechende Windows-Funktionen übersetzt.
</p><p>Linearer Framebuffer-Zugriff (LFB), der in <a href="VESA_BIOS_Extension" title="VESA BIOS Extension">VESA 2.0</a> eingeführt wurde, ist unter Windows in einer <i><span lang="en">Virtual DOS Machine</span></i> mittels NTVDM nicht möglich, da dessen <a href="DOS_Protected_Mode_Interface" title="DOS Protected Mode Interface">DPMI</a> nur VESA-Modi ohne linearen Framebuffer-Zugriff unterstützen. Einige DOS-Anwendungen ermöglichen es aber, die höheren VESA-Modi per <a href="Kommandozeilenparameter" title="Kommandozeilenparameter">Kommandozeilenparameter</a> nicht zu nutzen und auf VESA 1.2 zurückzufallen, das kein LFB, sondern <a href="Bank_Switching" title="Bank Switching">Bank Switching</a> nutzt, was von der NTVDM und dessen DPMI unterstützt wird.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Es ist möglich, mehrere Instanzen einer <i><span lang="en">Virtual DOS Machine</span></i> gleichzeitig auf einem Windows-Betriebssystem auszuführen. Durch spezielle <a href="Wrapper_(Software)" title="Wrapper (Software)">Wrapper</a>-Funktionen können Windows-Anwendungen auf den Inhalt der VDM zugreifen.
</p><p>Die <i><span lang="en">Virtual DOS Machine</span></i> macht sich den <i><span lang="en"><a href="Virtual_8086_Mode" title="Virtual 8086 Mode">Virtual 8086 Mode</a></span></i> (VM86) der <a href="X86-Architektur" title="X86-Architektur">x86-Architektur</a> zunutze, um DOS-Programme auszuführen. Da jedoch der Virtual-86-Modus auf <a href="X86-Prozessor" title="X86-Prozessor">x86-Prozessoren</a> im 64-Bit-Modus <span lang="en"><a href="X64#Betriebsmodi" title="X64">Long Mode</a></span> nicht verfügbar ist, wird die NTVDM bei <a href="64-Bit-Architektur" title="64-Bit-Architektur">64-Bit</a>-Versionen von Windows nicht mehr mitgeliefert.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Die für Linux entwickelte virtuelle DOS-Umgebung <a href="DOSEMU" title="DOSEMU">DOSEMU</a> teilt dieses Schicksal und emuliert den <span lang="en">Real Mode</span> deswegen in Software. Alternativen zur NTVDM sind entweder <a href="Emulator" title="Emulator">Emulatoren</a>, <a href="Virtuelle_Maschine" title="Virtuelle Maschine">virtuelle Maschinen</a> oder <a href="Interpreter" title="Interpreter">Interpreter</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Alternativen">Alternativen</h2></div>
<p>Das aus dem <a href="ReactOS" title="ReactOS">ReactOS</a>-Projekt stammende Pendant unterstützt auch 64-Bit-Varianten von Windows, also die <a href="X64" title="X64">x64</a>-Architektur, indem es (wie DOSEMU) den <span lang="en"><a href="Real_Mode" title="Real Mode">Real Mode</a></span> vollständig emuliert.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Die ReactOS-NTVDM ist jedoch nicht in gleicher Weise in Windows integrierbar, stattdessen muss jedes DOS-Programm mit dem Kommando <code>ntvdm.exe &lt;program&gt;.exe</code> (analog zum <code>start</code>-Kommando, wobei <span style="font-family: monospace, monospace;">&lt;program&gt;.exe</span> durch das zu startende Programm zu ersetzen ist) ausgeführt werden. Derzeit funktioniert damit jedoch nur der Fenstertextmodus.
</p><p>Eine für den Anwender weniger aufwendige Alternative zur NTVDM stellt ein <a href="Interpreter" title="Interpreter">Interpreter</a> dar, wie z.&nbsp;B. <a href="DOSBox" title="DOSBox">DOSBox</a>, weil die Installation eines kompatiblen DOS-Betriebssystems entfällt. Außerdem bietet DOSBox eine Vielzahl weiterer Möglichkeiten zur Steuerung der Umgebung, in der ein DOS-Programm abläuft, und benötigt zudem keine Treiber für emulierte Hardware. DOSBox emuliert auf Nicht-x86-Hardware einen Intel-Prozessor (<a href="Intel_80386" title="Intel 80386">i386</a>, <a href="Intel_i486" title="Intel i486">i486</a> oder <a href="Intel_Pentium" title="Intel Pentium">Pentium</a>), virtualisiert hingegen die meisten x86-<a href="Maschinenbefehl" class="mw-redirect" title="Maschinenbefehl">Instruktionen</a>, wenn es auf einem x86-Prozessor läuft. Komponenten wie die Soundkarte werden hingegen in beiden Fällen emuliert. Ein Treiber ist nicht notwendig, da dessen Funktionen von der virtuellen DOS-Umgebung ebenfalls bereitgestellt werden.
</p><p>Eine weitere Alternative zur <i><span lang="en">NT Virtual DOS Machine</span></i> sind vollständige <a href="Emulator" title="Emulator">Emulatoren</a> für den <a href="IBM-PC-kompatibler_Computer" title="IBM-PC-kompatibler Computer">IBM-kompatiblen</a> <a href="Personal_Computer" title="Personal Computer">PC</a>, bei dem ein gesamter Computer inklusive Prozessor in Software nachgebildet wird. Darauf muss ein PC-Betriebssystem jedoch von Hand installiert werden. Zur Nutzung als VDM-Alternative muss der <a href="Benutzer" title="Benutzer">Benutzer</a> daher ein PC-kompatibles DOS zur Verfügung haben – beispielsweise das unter der <a href="GNU_General_Public_License" title="GNU General Public License">GPL</a> stehende <a href="FreeDOS" title="FreeDOS">FreeDOS</a>, das daher quelloffen und gratis ist. Zusätzlich zur Installation von DOS sind noch die einzelnen DOS-<a href="Ger%C3%A4tetreiber" title="Gerätetreiber">Treiber</a> für die emulierte Hardware erforderlich, sowie deren im Vergleich mit anderen Betriebssystemen aufwändigere Konfiguration (siehe <span style="font-family: monospace, monospace;"><a href="CONFIG.SYS" title="CONFIG.SYS">CONFIG.SYS</a></span> und <span style="font-family: monospace, monospace;"><a href="AUTOEXEC.BAT" title="AUTOEXEC.BAT">AUTOEXEC.BAT</a></span>), damit bestimmte Funktionen genutzt werden können, beispielsweise die Audio-Ausgabe. Aufgrund der <a href="Plattform%C3%BCbergreifend" class="mw-redirect" title="Plattformübergreifend">plattformübergreifenden</a> Verfügbarkeit von Emulatoren können DOS-Programme derart nicht nur auf Windows, sondern auf einer Vielzahl weiterer <a href="Betriebssystem" title="Betriebssystem">Betriebssysteme</a> und <a href="Rechnerarchitektur" title="Rechnerarchitektur">Rechnerarchitekturen</a> ausgeführt werden. Ein Beispiel dafür ist <a href="Bochs" title="Bochs">Bochs</a>, aber auch <a href="Virtuelle_Maschine" title="Virtuelle Maschine">virtuelle Maschinen</a> (kurz: VM) wie <a href="QEMU" title="QEMU">QEMU</a>, <a href="Virtual_PC" title="Virtual PC">Virtual&nbsp;PC</a>, <a href="VirtualBox" title="VirtualBox">VirtualBox</a> und <a href="VMware" title="VMware">VMware</a> können zum Virtualisieren oder Emulieren von DOS genutzt werden. Weil eine Emulation sehr aufwendig ist, läuft ein emuliertes DOS meist um einiges langsamer ab als das nativ gestartete Betriebssystem. Bei einer Virtualisierung werden Teile der emulierten Hardware ebenfalls nativ ausgeführt, was einen Geschwindigkeitsvorteil bringt, sodass auch Emulatoren auf der <a href="X86-Architektur" title="X86-Architektur">x86-Architektur</a> oft u.&nbsp;a. den Prozessor virtualisieren, und somit nur Teile der Hardware emulieren.
</p>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Liste_von_Virtualisierungsprodukten" title="Liste von Virtualisierungsprodukten">Liste von Virtualisierungsprodukten</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li><a href="Andrew_S._Tanenbaum" title="Andrew S. Tanenbaum">Andrew S. Tanenbaum</a>: <cite style="font-style:italic">Moderne Betriebssysteme</cite>. Pearson Studium Verlag, 2003, ISBN 3-8273-7019-1.<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Virtual+DOS+Machine&amp;rft.au=Andrew+S.+Tanenbaum&amp;rft.btitle=Moderne+Betriebssysteme&amp;rft.date=2003&amp;rft.genre=book&amp;rft.isbn=3827370191&amp;rft.pub=Pearson+Studium+Verlag" style="display:none">&nbsp;</span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="http://www.sierrahelp.com/XPHelp/VESAModesAndXP.html"><i>VESA Support &amp; XP.</i></a> In: <i>sierrahelp.com.</i><span class="Abrufdatum"> Abgerufen am 10.&nbsp;Januar 2022</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AVirtual+DOS+Machine&amp;rft.title=VESA+Support+%26+XP&amp;rft.description=VESA+Support+%26+XP&amp;rft.identifier=http%3A%2F%2Fwww.sierrahelp.com%2FXPHelp%2FVESAModesAndXP.html&amp;rft.language=en">&nbsp;</span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24593.pdf"><i>AMD64 Architecture Programmer’s Manual – Volume 2: System Programming.</i></a> (PDF; 19,4&nbsp;MB) In: <i>amd.com.</i> AMD, Juni 2023, <span style="white-space:nowrap;">S. 11 ff.</span>,<span class="Abrufdatum"> abgerufen am 10.&nbsp;Februar 2024</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AVirtual+DOS+Machine&amp;rft.title=AMD64+Architecture+Programmer%E2%80%99s+Manual+%E2%80%93+Volume+2%3A+System+Programming&amp;rft.description=AMD64+Architecture+Programmer%E2%80%99s+Manual+%E2%80%93+Volume+2%3A+System+Programming&amp;rft.identifier=https%3A%2F%2Fwww.amd.com%2Fcontent%2Fdam%2Famd%2Fen%2Fdocuments%2Fprocessor-tech-docs%2Fprogrammer-references%2F24593.pdf&amp;rft.publisher=AMD&amp;rft.date=2023-06&amp;rft.language=en">&nbsp;</span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><span class="cite">Ziliang Guo: <a rel="nofollow" class="external text" href="https://reactos.org/blogs/ntvdm-progress/"><i>NTVDM progress.</i></a> In: <i>reactos.org.</i> 13.&nbsp;März 2014,<span class="Abrufdatum"> abgerufen am 29.&nbsp;Januar 2024</span> (englisch, <a href="GitHub" title="GitHub">GitHub</a>-Projekt: <a rel="nofollow" class="external text" href="https://github.com/TheDeadFish/dosEx64">dosEx64</a>).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AVirtual+DOS+Machine&amp;rft.title=NTVDM+progress&amp;rft.description=NTVDM+progress&amp;rft.identifier=https%3A%2F%2Freactos.org%2Fblogs%2Fntvdm-progress%2F&amp;rft.creator=Ziliang+Guo&amp;rft.date=2014-03-13&amp;rft.language=en">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-03-23" href="https://de.wikipedia.org/wiki/?title=Virtual_DOS_Machine&amp;oldid=254472390">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>